题目地址 (opens new window)

  • 🙂 第一次练习 2020年4月5日 这个根据题,明显是二分搜索的变形版,只需要将数组压平之后,再使用二分查找搜索即可。🐂🍻
  • 😄 第二次练习

# 二分查找

解题代码

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        if (matrix.length == 0)
            return false;

        int[] arr = flatMap(matrix);
        return binarySearch(arr, target);
    }

    private int[] flatMap(int[][] matrix) {
        int xl = matrix.length, yl = matrix[0].length, idx = 0;
        int[] retArr = new int[xl * yl];

        for (int i = 0; i < xl; i++)
            for (int j = 0; j < yl; j++)
                retArr[idx ++] = matrix[i][j];
        return retArr;
    }

    private boolean binarySearch(int[] arr, int target) {
        int l = 0, r = arr.length - 1;

        while(l <= r) {
            int mid = l + ((r - l) >> 1);
            if (arr[mid] == target)
                return true;
            else if (arr[mid] < target)
                l = mid + 1;
            else if (arr[mid] > target)
                r = mid - 1;
        }

        return false;
    }
}

# 易错点

  • 易错项 1
最后编辑时间: 7/14/2020, 9:21:47 AM